Device localization based on a learning model

ABSTRACT

Methods and systems of localizing a device are presented. In an example method, a communication signal from a device is received by a wireless reference point during a period of time. A sequence of values is generated from the communication signal, as received by the wireless reference point, during the period of time. The sequence of values is supplied to a learning model configured to generate an output based on past values of the sequence of values and at least one predicted future value of the sequence of values. The current location of the device is estimated during the period of time based on the output of the learning model.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Continuation of U.S. patent application Ser. No.14/311,077, filed on Jun. 20, 2014, which is incorporated herein byreference in its entirety.

FIELD

This application relates generally to the field of electroniccommunications and, in an example embodiment, to localization of adevice based on a learning model.

BACKGROUND

Localization, or the determination or estimation of the location of anelectronic device, often involves the use of Global Positioning System(GPS) circuitry operating at the device. The device may receive GPS datafrom a number of GPS satellites, and process that received data todetermine a location of the device. However, in some environments, suchas inside buildings, parking garages, or other obstructions to satellitesignals, the device may not be capable of receiving the GPS data.

Various forms of radio frequency (RF) localization may be employedinstead of GPS localization to locate a device in such environments.Oftentimes, in such systems, a characteristic of a communication signalreceived from the device, such as the Received Signal Strength Indicator(RSSI), is used to determine a location of the device relative to a“reference point” device, such as one or more signal readers, wirelessaccess points, or infrastructure devices designed specifically forlocalization of devices. The accuracy of such systems is typicallyenhanced by increasing the number of reference points.

Such localization systems also often employ a “fingerprinting” or “sitesurveying” operation prior to being placed into service for RFlocalization of actual user devices. During the fingerprinting or sitesurveying, a test device that transmits a signal may be moved throughoutan area proximate the reference points, typically along a predeterminedpath, to provide reference information against which received signalsfrom user devices are compared to localize those devices. Structuralchanges in the area of interest, such as location and/or orientationchanges in walls, partitions, barriers, and furniture, often reduce theaccuracy of a previous fingerprint or survey of the area, indicatingthat another fingerprinting or surveying operation may be beneficial.Further, temporary changes in the RF environment in the area ofinterest, such as the presence of people, may alter the reach orstrength of the communication signals received at the reference pointsfrom the user devices, thus complicating the task of determining thelocation of the devices relative to the reference points.

BRIEF DESCRIPTION OF DRAWINGS

Embodiments are illustrated by way of example and not limitation in thefigures of the accompanying drawings, in which like references indicatesimilar elements and in which:

FIG. 1 is a block diagram of an example communication system employablefor localizing a device based on a learning model;

FIG. 2 is a block diagram of an example wireless reference pointemployable in the communication system of FIG. 1;

FIG. 3 is a block diagram of an example learning model module employablein the wireless reference point of FIG. 2;

FIG. 4 is a flow diagram of an example method of localizing a devicebased on a learning model;

FIG. 5 is a flow diagram of an example method of processing acommunication signal from the user device for use in a learning model;

FIG. 6 is a flow diagram of an example method of processing a sequenceof values based on samples of the communication signal;

FIG. 7 is a flow diagram of an example method of estimating the devicelocation using triangulation based on output from learning models ofmultiple wireless reference points;

FIG. 8 is a block diagram of an example system learning modelincorporating multiple wireless reference point learning models;

FIG. 9 is a graphical representation of an example multiple-levellearning model;

FIG. 10 is a graphical representation of example individual cells of alevel of the multiple-level learning model of FIG. 9; and

FIG. 11 is a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions may beexecuted for causing the machine to perform any one or more of themethodologies discussed herein.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the embodiments disclosed herein. It will be evident,however, to one skilled in the art that the embodiments may be practicedwithout these specific details.

FIG. 1 is a block diagram of an example communication system 100employable for localizing a device (e.g., a user device 104) based on alearning model. In the communication system 100, a local area 101, whichmay be a home, apartment, department store, restaurant, bar, arena,stadium, or other similarly defined area, may include at least onewireless reference point 102A that may engage in local wirelesscommunication with the user device 104. In the specific example of FIG.1, three wireless reference points 102A, 102B, and 102C (each,alternatively, wireless reference point 102) are employed to at leastreceive local wireless communications 120 from the user device 104.However, one or more such wireless reference points 102 may be employedin other embodiments. As described in greater detail below, any or allof the wireless reference points 102 may process the local wirelesscommunications received from the user device 104 to localize, ordetermine within some margin of error the location of, the user device104. Further, each of these wireless reference points 102 may remain ata fixed location within the local area 101 to facilitate localization ofthe user device 104.

Examples of a wireless reference point 102 may include, but are notlimited to, a wireless access point for a wireless local area network(LAN), such as a Wi-Fi® wireless access point or router; a Bluetooth®communication device; a radio-frequency identification (RFID) tagreader; a cellular network (e.g., third-generation (3G) orfourth-generation (4G)) communication device; a ZigBee® or otherpersonal area network (PAN) communication device; or other wirelesscommunication device capable of engaging in wireless communication withthe user device 104 via any wireless communication protocol as a router,as a peer device, or in any other communication capacity. In otherexamples, the wireless reference point 102 may be a device that operatesstrictly for the purpose of localization of the user device 104. Such awireless reference point 102 may, for example, merely intercept localwireless communications between the user device 104 and another wirelessreference point 102 or another user device 104 and process thosecommunications to localize the user device 104.

Examples of the user device 104 may include, but are not limited to,desktop, laptop, and tablet computers; gaming systems; smart phones;personal digital assistants (PDAs); smart televisions; smart appliances;and other communication devices capable of communicating with a wirelessreference point 102 via any wireless communication network protocol,such as, for example, Wi-Fi®, Bluetooth®, RFID, 3G, 4G, ZigBee®, or anyother LAN, PAN, or other localized wireless network protocol. While asingle user device 104 is depicted in FIG. 1, any number of user devices104 capable of communicating with the wireless reference points 102 maybe localized within the local area 101.

FIG. 2 is a block diagram of an example of the wireless reference point102 employable in the communication system 100 of FIG. 1. In thisexample, wireless reference point 102 may include a local communicationinterface 202, a router module 204, a user device identification module206, and a learning model module 208. Each of these modules, as well asother modules described herein, may include hardware, software, or somecombination thereof for performing the various functions correspondingto the module, as is described more fully below. Other possiblecomponents, such as, for example, a wide area network (WAN) interface, auser interface, and so on, may be included in the wireless referencepoint 102, but are not explicitly illustrated in FIG. 2 to simplify thefollowing discussion. Additionally, not all components depicted in FIG.2 and other drawings may be included in all embodiments. Further,components shown in FIG. 2 and other block diagrams herein may befurther divided into separate components, or may be combined to createfewer, larger components.

The local communication interface 202 may be configured to facilitatelocal wireless communication between the wireless reference point 102and one or more of the user devices 104 of FIG. 1. Accordingly, thelocal communication interface 202 may be capable of communicating vialocal wireless communications 120 via any one or more of 3G, 4G,ZigBee®, or any other LAN, PAN, or other localized wireless networkprotocol, as mentioned above.

The router module 204, if included in the wireless reference point 102,may be configured to serve as a router for communications between userdevices 104 of the local area 101, as well as possibly between each userdevice 104 and other networks, such as a WAN. In other examples, thewireless reference point 102 may be communicatively coupled with anexternal LAN router to facilitate communication among the wirelessreference point 102 and the user devices 104.

The user device identification module 206 may be configured to identifythe one or more user devices 104 in the local area 101 based oninformation included in the local wireless communications 120 involvingthe user devices 104. For example, the local wireless communications 120may include data packets that incorporate an identifier for the userdevice 104 transmitting the data packets. Such an identifier may be, forexample, a MAC (Media Access Control) address of the user device 104,but the user device identification module 206 may employ any otheridentifier that uniquely identifies the user device 104 and, thus, thelocal wireless communications 120 transmitted thereby.

The learning model module 208 may be configured to employ a learningmodel to process those local wireless communications 120 associated witheach user device 104 located within the local area 101, as identified bythe user device identification module 206, to determine or at leastestimate a current location of that user device 104. As described ingreater detail below, the learning model employed in the learning modelmodule 208 is configured to localize the user devices 104 within thelocal area 101 in an “online” manner using data generated from signalsreceived from the user devices 104 during normal operations without theuse of fingerprinting, site surveying, or other types of “offline”operations for gathering data regarding characteristics of the localarea 101 prior to the actual localizing of the user devices 104.Further, in at least some embodiments, the learning model may beconfigured to possess an ability to maintain historical data regardingpreviously-received local wireless communications 120 that allow thelearning model to recognize previous temporal patterns in received localwireless communications 120 while adapting to changing conditions withinthe local area 101.

FIG. 3 is a block diagram of an example of the learning model module 208employable in the wireless reference point 102 of FIG. 2. In theparticular example of FIG. 3, the learning model module 208 may includea device model creation module 302, a signal sampling module 304, asample sorting module 306, a sample encoding module 308, aninference/prediction engine 310, and a device location estimation module312. Other modules not specifically depicted in FIG. 3 may also beincluded in the learning model module 208, but such are not mentionedherein to simplify the following discussion. In other embodiments, oneor more of the modules 302-312 of FIG. 3 may not be included in thelearning model module 308. In at least some examples, the learning modelmodule 208 may also include one or more databases or datasets, such asone or more user device models 320, a reference point model 322, and/orhistorical data 330 describing the received local wirelesscommunications 120. In yet other embodiments, one or more of the modules302-312 and/or databases 320, 322, and 330 may be located alternativelyin another device, such as, for example, another wireless referencepoint 102 or a server that is communicatively coupled with the wirelessreference point 102.

The device model creation module 302 may be configured to create alearning model for a particular user device 104. The learning modelmodule 208 may utilize the created learning model to estimate thelocation of that user device 104 in an online manner during normaloperations without preceding “offline” operations to characterize theloca are 101, such as fingerprinting and the like. In one example, thedevice model creation module 302 may create the learning modelassociated with the particular user device 104 in response to the userdevice identification module 206 (FIG. 2) first encountering oridentifying the user device 104. Additionally, the device model creationmodule 302 may store the created learning model as one of the userdevice models 320 for subsequent retrieval when the user deviceidentification module 206 subsequently detects the same user device 104within the local area 101.

One example of the created learning model may be a model based on aportion of the human brain, such as the cerebral cortex. Other possiblemachine-based learning models or techniques, such as, for example, sometypes artificial neural networks (ANNs) or reinforcement learningsystems, may be employed in other examples. An example of a learningmodel is described below in conjunction with FIGS. 9 and 10.

In some examples, the device model creation module 302 may alsoconfigure the created learning model for the user device 104 associatedtherewith. For example, certain aspects of the model may be tailored tothe particular type of user device 104, such as the particularcommunication protocol being employed by the user device 104, thespecific hardware employed in the user device 104, and so on. In otherexamples, all types of user devices 104 may correspond to the samemodel, thus possibly indicating that no particular configuration of themodel is warranted.

Similarly, in some embodiments, the device model creation module 302 maycreate an encoder for the sequence of samples from the communicationsignal transmitted by the user device 104, as received at the wirelessreference point 102. Such an encoder, in some embodiments, may receivethe sequence of samples, or some version of those samples, and encodethem into a form that the created learning model may receive as input.For example, the sequence of samples may be encoded into a sparsedistributed representation (SDR) (or, alternately, sparse distributedmemory (SDM)) such that only a small percentage of the input to thelearning model is active at any one time while, at the same time, asignificant absolute number of separate elements of the input to thelearning model are activated to represent a particular state in themodel. Sparse distributed representations are discussed below inconjunction with FIG. 10.

The signal sampling module 304, the sample sorting module 306, and thesample encoding module 308 may be configured to generate a sequence ofvalues from the received communication signal from a user device 104that is provided to the learning model corresponding to the user device104 for localization of the user device 104. One or more of thesemodules 304, 306, and 308 may be omitted in some embodiments.

The signal sampling module 304 may be configured to sample a particularquantity or characteristic of the communication signal received from theuser device 104 from time to time to generate a sequence of samples. Inone example, the signal sampling module 304 may sample the communicationsignal at some periodic rate, such as, for example, once every second,once every two seconds, or the like. In other examples, the periodicrate may be any rate that is faster (e.g., once every 100 milliseconds(msec), once every 200 msec, etc.) or slower (e.g., once every fiveseconds) in other examples.

In some embodiments, the signal sampling module 304 may sample anyparticular type of measurable characteristic that relates in some way toat least a distance between the user device 104 and the wirelessreference point 102. For example, the measured characteristic may be theReceived Signal Strength Indicator (RSSI) of the received communicationsignal. Other measured characteristics of the received communicationsignal that may be employed in other embodiments include, for example,link quality and channel quality of the received communication signal.

The sample sorting module 306 may be configured to sort or apportioneach of the sequence of samples from the user device 104 into intervals,such as, for example, bins of a histogram. In some embodiments, thissorting functionality may reduce the possible number of values providedto an encoder, such as may be provided in the sample encoding module308. Reducing the possible numbers may, in turn, simplify the structureof the encoder. In some examples, the sample sorting module 306 may beunnecessary, such as in embodiments in which the samples generated bythe signal sampling module 304 may be received directly at the sampleencoding module 308.

The sample encoding module 308 may be configured to encode samples ofthe communication signal from the user device 104 received from thesignal sampling module 304 or the sample sorting module 306 to generatea sequence of values for use as input to the learning modelcorresponding to the user device 104. As described above in one example,the encoded samples may be in the form of sparse distributedrepresentations (SDRs). The sample encoding module 308 may encode thereceived samples into other types of representations, depending on thetype of input expected by the specific learning model employed for theuser device 104.

Various parameters of any, or all, of the signal sampling module 304,the sample sorting module 306, and the sample encoding module 308 may bebased on a reference point model 322 of the wireless reference point102. For example, the reference point model 322 may specify the rate orperiod at which the received communication signal is sampled, the sizeof the intervals into which the samples may be sorted, and/or the typeof encoding to be performed on the sorted or unsorted samples. Suchparameters may be based, at least in part, on the particular circuitryand software employed in the wireless reference point 102.

Any, or all, of the signal sampling module 304, the sample sortingmodule 306, and the sample encoding module 308 may store raw samples,sorted samples, encoded samples, and/or the like as historical data 330.The historical data 330 may be stored within the wireless referencepoint 102, or within some data storage device (not shown in FIG. 1) thatis communicatively coupled with the wireless reference point 102. Forexample, the historical data 330 may be stored to a server or othercloud infrastructure available via a WAN (e.g., the Internet) using aWAN interface (not shown in the wireless reference 102 of FIG. 2). Thehistorical data 330 may serve as functional input (in addition to theinput associated with the current raw, sorted, or encoded sample of thecommunication signal) to the learning model corresponding to the userdevice 104 of current interest, and/or may be employed forpost-processing analysis of the performance of any portion of thelearning model module 208.

The inference/prediction engine 310 may be configured to receive thesequence of values generated by the sample encoding module 308 based onthe communication signal from the user device 104 and process the valuesto generate an output or state using the user device model 320 for thatsame user device 104 that may be used to localize the user device 104.In other embodiments, the inference/prediction engine 310 may receiveun-encoded samples, which may or may not be sorted by the sample sortingmodule 306, for processing to produce the output. In at least someexamples, the inference/prediction engine 310 may process the incomingsequence of values without reference to time (and, thus, without anynotion or concept of time) associated with the values, even though thesamples used to generate the values may be captured at a particularrate, as indicated above.

As is described in greater detail below for one particular embodiment,the inference/prediction engine 310, by use of the user device model 320for the user device 104 transmitting the communication signal, mayproduce a particular output or state based on the current input andprevious inputs that have been provided to the user device model 320(alternatively, the learning model 320 or, more simply, the model 320)as well as the particular order in which those inputs were provided tothe model 320. Accordingly, the model 320 may allow theinference/prediction engine 310 to infer or recognize a current patternof inputs as similar to previously-seen input patterns. Further, themodel 320 may allow the inference/prediction engine 310 to predictfuture inputs based on the present and past inputs.

In some examples, the inference/prediction engine 310 may be configuredto predict a predetermined number of future input values (e.g., the nextinput value, the next two input values, the next three input values,etc.) ahead of a current value of the sequence of values. Further, thepredicted future input values for each current input value received maybe based on the current input value and a predetermined number ofimmediately-preceding input values determined by a sample window size.For example, using a sample window size of five samples, theinference/prediction engine 310 may be configured to predict one or morefuture input values based on the current input value and the fourpreceding input values. In other embodiments, the sample window size maybe any positive integer greater than 1. In such examples, theinference/prediction engine 310 may not generate any predictions untilenough input values have been generated to fill the sample window. Oncethe sample window is filled, the inference/prediction engine 310 maypredict one or more future input values for each input value generated.

In yet other embodiments, the inference/prediction engine 310 may baseits prediction of one or more future input values on any or all of thepreceding input values, which may, in turn, be based on any or all ofthe historical data 330, and thus may not be limited to a particularsample window. In addition, neither the particular preceding inputvalues upon which the predictions are based, nor the predicted one ormore future input values that are based on the preceding input values,need form a contiguous series of input values within the sequence ofvalues.

The inference and prediction capabilities of the model 320, as describedabove, may facilitate both adaptability and stability in light ofchanging transmission conditions in the local area 101, changingtransmission characteristics of the user device 104, changing receptioncharacteristics of the wireless reference point 102, and so on. Forexample, in some embodiments, a relatively larger sample window size mayallow the inference/prediction engine 310 to predict or infer a largernumber of future input values, or one or more input values reachingfurther into the future, than what may be produced using a relativelysmaller sample window size. Accordingly, a relatively larger window sizemay reduce variability and/or increase stability in estimating thelocation of the user device 104. Conversely, a relatively smaller windowsize may provide more confidence and accuracy between the predictedinput values and the input values actually received, but may contributeless to overall stability in estimating the location of the user device104.

In one example, the wireless reference point 102 may be configured tocombine its own user device model 320 with the user device models 320 ofthe same user device 104 as generated by other wireless reference points102 within the local area 101 to generate an overall learning model forthe user device 104. In this example, the wireless reference point 102may receive and store the user device models 320 for the other wirelessreference points 102. The device model creation module 302 may generatean overall, combined user device model 320. The inference/predictionengine 310 may receive sample data (e.g., raw sample data, sorted sampledata, and/or encoded sample data) from this and other wireless referencepoints 102 and provide that input to the combined user device model 320to yield a single output that may be indicative of the current locationof the user device 104 within the local area 101.

The device location estimation module 312 may be configured to map theoutput of the inference/prediction engine 310 to a particular location,or set of locations, of the user device 104 within the local area 101.The mapping may be based, in part, on correlating current or previousoutputs of the inference/prediction engine 310 to information thatrepresents the actual location of user device 104. Such information maybe based on human perception of the location of the user device 104, oninteraction of the user device 104 with another device or system, suchas, for example, a Near-Field Communication (NFC™) (e.g., apoint-of-sale (POS) station that may interact with the user device 104),or on other means.

In some embodiments, the device location estimation module 312 mayreceive corresponding outputs from one or more other wireless referencepoints 102 in the local area 101 and combine those outputs to provide anestimate of the current location of the user device 104. For example,the device location estimation module 312 may combine the outputs withknowledge regarding a location of each of the wireless reference points102 to triangulate the location of the user device 104. Other ways ofcombining the outputs may be employed in the device location estimationmodule 312 in other examples.

Concerning the use of information from multiple wireless referencepoints 102, any one or more of the wireless reference points 102 mayreceive information from other wireless reference points 102, such asthe communication signal samples, as well as user device models 320, asdiscussed above. In other embodiments, each of the wireless referencepoints 102 may provide user device models 320, as well as sampleinformation, to a server via a WAN, or to another device within thelocal area 101, which may then process that information to derive orestimate a current location of the user device 104.

FIG. 4 is a flow diagram of an example method 400 of localizing a device(e.g., the user device 104 of FIG. 1) based on a learning modelassociated with the device (e.g., the user device model 320 of FIG. 3).In the following examples, the wireless reference point 102 of FIG. 1,including the various components illustrated in the learning modelmodule 208 of FIG. 3, is presumed to perform the various operations ofthe method 400. However, other devices or components not specificallydescribed herein may perform the operations of the method 400 in otherembodiments.

In the method 400, a communication signal is received from a deviceduring a period of time (operation 402). In various examples describedherein, the device may include the user device 104 of FIG. 1, such as asmartphone, laptop computer, tablet computer, or another deviceconfigured to communicate with the wireless reference point 102 in thelocal area 101. In one example, the communication signal that istransmitted from the device may be a report or a beacon that the devicetransmits in a broadcast manner to various listeners, including thewireless reference point 102, as well as any additional wirelessreference points 102 located in the local area 101. In another example,the communication signal being transmitted from the device may be aresponse to a request wireless transmitted by the wireless referencepoint 102, such as an active probe request in WiFi® communications. Inat least some embodiments, the request is directed in a unicast mannerspecifically to the receiving device, to which the device responds in asimilar manner.

The wireless reference point 102 or some device communicatively coupledtherewith may then generate a sequence of values from the communicationsignal that is received by the wireless reference point 102 during theperiod of time (operation 404). As discussed above, in some examples,the sequence of values may be based on periodic samples of somecharacteristic of the communication signal, such as RSSI, which may thenpossibly be further processed by way of sorting and/or encoding.

The resulting sequence of values may then be supplied to a learningmodel 320 (operation 406). In one example, the learning model 320 may beconfigured to produce a state or output based on past values in thesequence of values, as well as at least one predicted value of thesequence of values. In at least some embodiments, the use of at leastone predicted value, which may also be based on past values in thesequence, may facilitate a stable output of the learning model 320 inthe presence of significant, but temporary, variations of the sequenceof values. In some examples, such variations may be experienced whenemploying RSSI or other characteristics employed for the communicationsignal samples, but other types of samples of the communication signalmay be similarly affected in other embodiments. Such variations may becaused by, for example, changes in communication signal characteristicsof the user device 104, changes in environmental conditions that mayaffect the communication signal, the layout of the local area 101, suchas the existence, location, and/or orientation of various physicalfeatures (e.g., walls, partitions, furniture, and so on), and the numberand/or location of people within the local area 101. Further, thelearning model 320 may adapt over time to more permanent changes in thelocal area 101. The current location of the user device 104 within thelocal area 101 may then be estimated during the period of time based onthe state or output of the learning model 320 (operation 408).

While the operations 402 through 408 of FIG. 4 (as well as theoperations of other methods illustrated herein) are shown as occurringin a specific order, other orders of operation, including concurrentexecution of two or more operations, are also possible. For example,operations 402 through 408 may occur periodically, continually, or insome other repetitive manner, possibly in a parallel, simultaneous, orconcurrent fashion, as the user device 104 transmits communicationsignals within the local area 101, which the wireless reference point102 may then receive and process to estimate a location of the userdevice 104, as described above. Further, the operations 402 through 408may be applied to each separate user device 104 that transmitscommunication signals within the local area 101, thus estimating thelocation of each of the user devices 104 within the local area 101.

FIG. 5 is a flow diagram of an example method 500 of processing acommunication signal from the user device 104 for use in a learningmodel (e.g., user device model 320). In the method 500, thecommunication signal may be sampled to produce a sequence of samples(operation 502). The produced sequence of samples may be samples of anycharacteristic of the communication signal transmitted by the userdevice 104 that may be employed ultimately to determine a location ofthe user device 104 within the local area 101. Examples of thecharacteristic of the communication signal may include, but are notlimited to, RSSI, link quality, and channel quality. In at least someembodiments, the sampling occurs periodically at a set sampling rate,such as once every one or more seconds, once every fraction of a second(e.g., once every 500 msec), or at some other rate that yieldsmeaningful information as to changes in the sampled characteristic.

In some examples, the sequence of samples may be sorted into a number ofintervals (operation 504). For example, each of the samples may besorted into a “bin” corresponding to a particular interval of values forthe characteristic. The intervals may collectively and contiguouslycover a particular range of values of the characteristic. Further, insome cases, the intervals may be equal in size over a linear scale, alogarithmic scale, or another scale for the characteristic based on thenature of the characteristic. Additionally, the size of the intervalsmay be set such that the number of significant digits representing eachof the measured samples is reduced while still providing meaningfulinformation to the learning model.

The sorted sequence of samples may then be encoded to generate thesequence of values (operation 506) that are to be supplied to thelearning model 320, as indicated in operation 406 of FIG. 4. In oneexample, the encoding may result in each of the sorted samples beingmapped to a corresponding sparse distributed representation (SDR). Inone example, an SDR may include a large number of bits (binary digits)(e.g., 50 bits, 100 bits, and so on) in which a relatively lowpercentage of these bits (e.g., less than five percent, less than threepercent, and the like) are active in any one sample. In someembodiments, the similarity between two samples may be judged based onthe number or percentage of active bits that are common between the twosamples. In other embodiments, the unsorted sequence of samples providedin operation 502 may be supplied directly to operation 506 for encoding.

FIG. 6 is a flow diagram of an example method 600 of processing asequence of values based on the samples of the communication signalbeing received from a user device 104. While the wireless referencepoint 102 of FIG. 1 is presumed to perform the various operations of themethod 600, one or more other devices communicatively coupled with thewireless reference point 102 that receives a communication signal from auser device 104 may perform one or more of the operations. In the method600, an identity of the current user device 104 from which thecommunication signal is being received at the wireless reference point102 is determined (operation 602). In one embodiment, the identity ofthe current user device 104 may be determined based on informationincluded in the communication signal, such as a media access control(MAC) address of the user device 104. Other identifiers for either orboth of the user device 104 and a user of the user device 104 may beemployed in other embodiments.

Based on the received identity of the user device 104, the wirelessreference point 102 may then determine if a learning model 320 for theidentified user device 104 is available (operation 604). For example, ifthe wireless reference point 102 has previously received a communicationsignal from the user device 104, the wireless reference point 102 mayhave previously generated a learning model 320 for that user device 104.If the learning model 320 is available, the wireless reference point 102may then retrieve the model 320 for the current user device 104(operation 610), such as from the user device models 320 of FIG. 3.Otherwise, if a learning model 320 for the current user device 104 isnot present, the wireless reference point 102 may create and/orconfigure a learning model 320 for the user device 104 (operation 606).In some examples, the wireless reference point 102 may also create asample encoder (operation 608), as described above in conjunction withFIG. 5. In some examples, the created and configured learning model 320and/or the created encoder may be the same for each of the user devices104 that are detected by the wireless reference point 102 within thelocal area 101. In other examples, the created and configured learningmodel 320 and/or the created encoder may be different from otherscreated for other user devices 104 based on one or more factors, suchas, for example, a type, manufacturer, or model number of the userdevice 104. Such information may be incorporated, in some examples,within the communication signal received at the wireless reference point102 from the user device 104.

Once the appropriate learning model 320 for the current user device 104has been created or retrieved, the sequence of values generated from thesampling, sorting, and/or encoding of the communication signal receivedfrom the current user device 104 is supplied to the learning model 320for that user device 104 (operation 612). In some examples, each valueis provided, one at a time in order of receipt, to the learning model320 to generate a new output or state of the learning model 320. To thatend, the learning model 320 may employ a current state of the model 320to process a current input value, thus generating a new state of themodel 320 (operation 614). As mentioned above, the current state of themodel 320 may include or reflect previous input values of thecommunication signal that have been supplied to the model 320, as wellas one or more predicted future input values produced by the model 320.

Based on the new state or output of the model 320, the current locationof the user device 104 may be determined or estimated (operation 616).In some embodiments, the learning model 320, or, more broadly, thewireless reference point 102, may receive additional information thatindicates the current location of the user device 104 such that the newstate generated by the model 320 may be correlated to the currentlocation so that similar future states of the model 320 may beinterpreted as indicating the same or similar location. As indicatedabove, such information may relate a particular output or state of themodel 320 to a human perception of the location of the user device 104,or to an interaction of the user device 104 with another device orsystem, such as a POS device, an NFC™ station, or other system.

In some examples, the current output or state of the learning model 320being employed in the wireless reference point 102 may be combined withthe current output or state of one or more learning models 320 for thesame current user device 104 being utilized in one or more otherwireless reference points 102 to determine the current user device 104location within the local area 101. Those examples are discussed morefully below in connection with FIGS. 7 and 8.

If another input value from the communication signal of the same userdevice 104 is available in the sequence of values (operation 618), thatnext input value may be provided to the learning model 320 of the userdevice 104 (operation 612) and processed to generate the next state(operation 614), which may be employed to update the current location ofthe user device 104 (operation 616) as described above. If, instead, novalues remain from the sequence of values associated with the currentuser device 104, the wireless reference point 102 may then await acommunication signal from another user device 104 (operation 620). Theidentity of that user device 104 may then be determined (operation 602),the model 320 associated with that user device 104 may then be created(operations 606, 608) or retrieved (operation 610), and the sequence ofvalues generated from the communication signal transmitted from thatuser device 104 may then be provided to the appropriate device model 320(operation 612) and processed (operation 614) as discussed earlier todetermine a current location of that user device 104 (operation 616). Inexamples in which more than one user device 104 is present andtransmitting within the local area 101, the wireless reference point 102may actively maintain a separate model 320 for each user device 104,concurrently processing the input values generated from the receivedcommunication signal of each user device 104 to determine or estimatethe current location of each user device 104 within the local area 101.

FIG. 7 is a flow diagram of an example method 700 of estimating thelocation of a user device 104 using triangulation based on outputs fromlearning models 320 of multiple wireless reference points 102. In themethod 700, the current states or outputs of the learning models 320 forthe current user device 104 maintained in the multiple wirelessreference points 102 may be received (operation 702). In one example,the current states or outputs may be received at one of the wirelessreference points 102 for further processing. In other embodiments, thecurrent states or outputs may be received at a server or other system atwhich the processing of that information is to occur. Based on thecurrent states or outputs of the learning models 320 of the multiplewireless reference points 102, the current location of the user device104 may be estimated or determined via triangulation (operation 704). InFIG. 1, for example, the state or output of the learning model 320corresponding to each of the wireless reference points 102A, 102B, and102C may indicate a distance from the corresponding wireless referencepoint 102. By triangulating using these distances and the locations ofthe corresponding wireless reference points 102 within the local area101, a location for the user device 104 may be determined or estimated.

In some embodiments in which triangulation may or may not be employed,as described above, the one or more wireless reference points 102 mayemploy phased-array antennas and/or directional beam-forming techniquesthat may define a more narrowly-focused area in which a user device 104may be localized. Consequently, stabilization of signal parameters andthe localization of a user device 104, as described herein, may beenhanced from the use of such antennas and techniques, as may be foundin high-end infrastructure environments.

In another example, FIG. 8 is a block diagram of an example systemlearning model 800 incorporating user device models 802A, 802B, and soon (or, alternatively, user device model 802 or user device learningmodel 802) for a current user device 104, wherein each user device model802 is associated with a separate wireless reference point 102. In oneembodiment, each of the user device models 802 for the current userdevice 104 may be maintained within its corresponding wireless referencepoint 102, with each generating a current state or output. These currentstates or outputs may then be provided to a wireless reference point 102or other system, which then processes the current states or outputs toyield an overall state or output of the system learning model 800 of theuser device 104. The overall state or output may be employed todetermine or estimate the current location of the user device 104.

In another embodiment, the entire system learning model 800 for the userdevice 104, including each of the incorporated user device learningmodels 802, may be employed by one of the wireless reference points 102or another system. As a result, the wireless reference point 102 orother system that includes the system learning model 800 and componentuser device learning models 802 may receive the sequence of values fromthe communication signal of the corresponding user device 104 andprovide those values to the system learning model 800 to estimate ordetermine the current location of the user device 104.

As mentioned above, any learning model 320 capable of receivingsequences of values, recognizing patterns in the sequences of values,and predicting future values based on previously received values, suchas various types of machine learning models and artificial neuralnetworks (ANNs), may be employed in the various embodiments describedabove. Such learning models 320 may include or utilize, in someexamples, SDRs and similar memory representations modelled on the humanbrain.

FIG. 9 is a graphical representation of an example multiple-levellearning model 900, which may serve as a user device model 320, asdepicted in FIG. 3. One example of such a multiple-level model is theHierarchical Temporal Memory (HTM) provided as part of the NumentaPlatform for Intelligent Computing (NuPIC®) supported by Numenta®, Inc.Other examples of machine learning models, such as reinforcementlearning models and other ANNs, may incorporate similar concepts orstructures as well. As illustrated in FIG. 9, the learning model 900 mayinclude multiple semantic model levels 904, each of which may processinput values provided thereto from a lower model level 904 and provideoutput to a higher model level 904 via inter-level communications 908.In some examples, information may also be provided from higher modellevels 904 to lower model levels 904 via the inter-level communications908. Also, in some embodiments, intra-level communications 906 may occurwithin one or more of the model levels 904. As shown in the particularexample of FIG. 9, each of the model levels 904 may process its inputsand provide an overall smaller result or output to the following highermodel level 904. However, multiple-level models of other examples arenot so constrained, as some model levels 904 may actually provide alarger amount of data, such as a larger SDR representation, to a highermodel level 904 in some embodiments. In some embodiments, the modellevels 904 collectively may correlate with a single layer of theneo-cortex portion of the human cerebral cortex. More specifically, inone example, the model levels 904 collectively may represent what iscommonly referred to as the “Layer 3” neurons of the neo-cortex.

In the example of FIG. 9, the learning model 900 may receive encodedsamples 902 (e.g., as a sequence of values, as indicated above) based onsamples of one or more characteristics of a communication signalreceived from a user device 104, as described above. In one example,each of the values may be an SDR of the sampled characteristic, and eachof the values may be provided, in sequence as sampled, to the learningmodel 900. The resulting current output 910 or state of the learningmodel 900 may thus reflect the current location of the user device 104based on pattern matching and/or value prediction facilitated by thelearning model 900.

FIG. 10 is a graphical representation of example individual “cells” 1002of a model level 904 of the learning model 900 of FIG. 9. Depending onthe particular learning model 900, the cells 1002 may represent a singleneuron or group of neurons, or some other construct that represents oremulates a portion of the human brain. As shown, multiple layers 1004 ofcells 1002 may form a single model level 904 of the learning model 900,although other examples may include but a single layer 1004. Each cell1002 may be configured to receive and process data from lower celllayers 1004, as well as communicate with nearby cells 1002 within itslayer 1004 and nearby layers 1004. Particular characteristics of thisinter-cell communication, as well as the intra-level communications 906and the inter-level communications 908 of FIG. 9, may adapt or changeover time as the sequence of values 902 are provided to, and processedby, the learning model 900. Such characteristics of these types ofcommunications may include, for example, the particular cells 1002 andlayers 1004 with which each cell 1002 or layer 1004 communicates, theparticular weighting or other processing applied to each of thosecommunications, and so on.

Also, in one embodiment, each of a set of cells 1002, such as the cells1002 of a lowest layer 1004 of a lowest model level 904, may be set tocorrespond to an SDR of an encoded sample 902 provided as input to thelearning model 900. Such an input may facilitate pattern matching,sample prediction, and other functions often associated with at leastsome types of learning models 900.

In yet other examples, other machine-learning or ANN models oralgorithms that do not exhibit one or more characteristics of thelearning model 900 described with respect to FIGS. 9 and 10 may also beemployed as the learning models 320, such as those facilitated by theinference/prediction engine 310 of the learning model module 208 of FIG.3, described above.

In at least some of the embodiments described above, a learning modelmay be employed to process samples of one or more characteristics of acommunication signal transmitted by a user device and received by awireless reference point to determine or estimate a location of the userdevice within a local area that includes the user device and thewireless reference point. In some examples, the learning model mayreceive one or more sequences of values representing the samples of thecommunication signal characteristics, recognize patterns in thosevalues, and base estimations of the user device location on thoserecognized patterns. This use of sample history may allow thedetermination of user device location without the need forfingerprinting, site surveying, or similar operations specificallydesigned to characterize the communication characteristics of a localarea prior to functional operation of the locating system. Further, thelearning model may be capable of predicting future values of a sequenceand employing those predicted values to provide correct locationinformation for the user device in the presence of signal noise,temporary environmental changes, increases or decreases in the number ofpeople present, and other alterations to the local area environment. Thelearning model may thus adapt to such changes in the local areaon-the-fly without halting normal operations to re-characterize thelocal area offline.

FIG. 11 illustrates a diagrammatic representation of a machine in theexample form of a computer system 1100 within which a set ofinstructions may be executed for causing the machine to perform any oneor more of the methodologies discussed herein. In alternativeembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer, a tablet computer, a set-top box(STB), a personal digital assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein.

The example computer system 1100 includes a processor 1102 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 1104 and a static memory 1106 which communicatewith each other via a bus 1108. The computer system 1100 may furtherinclude a video display 1110 (e.g., a liquid crystal display (LCD) or acathode ray tube (CRT)). The computer system 1100 also includes analphanumeric input device 1112 (e.g., a keyboard), a user interface (UI)navigation device 1114 (e.g., a mouse), a disk drive 1116, a signalgeneration device 1118 (e.g., a speaker) and a network interface device1120.

The disk drive 1116 includes a machine-readable medium 1122 on which isstored one or more sets of instructions and data structures (e.g.,instructions 1124) embodying or utilized by any one or more of themethodologies or functions described herein. The instructions 1124 mayalso reside, completely or at least partially, within the static memory110, within the main memory 1104, and/or within the processor 1102during execution thereof by the computer system 1100, the main memory1104 and the processor 1102 also constituting machine-readable media.

The instructions 1124 may further be transmitted or received over acomputer network 1150 via the network interface device 1120 utilizingany one of a number of well-known transfer protocols (e.g., HyperTextTransfer Protocol (HTTP)).

While the machine-readable medium 1122 is shown in an example embodimentto be a single medium, the term “machine-readable medium” should betaken to include a single medium or multiple media (e.g., a centralizedor distributed database, and/or associated caches and servers) thatstore the one or more sets of instructions 1124. The term“machine-readable medium” shall also be taken to include any medium thatis capable of storing, encoding or carrying a set of instructions forexecution by the machine and that cause the machine to perform any oneor more of the methodologies of the present inventive subject matter, orthat is capable of storing, encoding or carrying data structuresutilized by or associated with such a set of instructions 1124. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, solid-state memories, and optical and magnetic media.

1 Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and the operations may beperformed in an order other than that illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as afield-programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC). A hardware module may also includeprogrammable logic or circuitry that is temporarily configured bysoftware to perform certain operations. For example, a hardware modulemay include software encompassed within a general-purpose processor orother programmable processor. It will be appreciated that the decisionto implement a hardware module mechanically, in dedicated andpermanently configured circuitry, or in temporarily configured circuitry(e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where thehardware modules comprise a general-purpose processor configured bysoftware to become a special-purpose processor, the general-purposeprocessor may be configured as respectively different hardware modulesat different times. Software may accordingly configure a processor, forexample, to constitute a particular hardware module at one instance oftime and to constitute a different hardware module at a differentinstance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. Moreover, theone or more processors may also operate to support performance of therelevant operations in a “cloud computing” environment or as a “softwareas a service” (SaaS). For example, at least some of the operations maybe performed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Some portions of this specification are presented in terms of algorithmsor symbolic representations of operations on data stored as bits orbinary digital signals within a machine memory (e.g., a computermemory). These algorithms or symbolic representations are examples oftechniques used by those of ordinary skill in the data processing artsto convey the substance of their work to others skilled in the art. Asused herein, an “algorithm” is a self-consistent sequence of operationsor similar processing leading to a desired result. In this context,algorithms and operations involve physical manipulation of physicalquantities. Typically, but not necessarily, such quantities may take theform of electrical, magnetic, or optical signals capable of beingstored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b), requiring an abstract that will allow the reader to quicklyascertain the nature of the technical disclosure. The Abstract issubmitted with the understanding that it will not be used to interpretor limit the scope or meaning of the claims. In addition, in theforegoing Detailed Description, it can be seen that various features aregrouped together in a single embodiment for the purpose of streamliningthe disclosure. This method of disclosure is not to be interpreted asreflecting an intention that the claimed embodiments include morefeatures than are expressly recited in each claim. Rather, as thefollowing claims reflect, inventive subject matter lies in less than allfeatures of a single disclosed embodiment. Thus the following claims arehereby incorporated into the Detailed Description, with each claimstanding on its own as a separate embodiment.

Although embodiments of the present disclosure have been described withreference to specific example embodiments, it will be evident thatvarious modifications and changes may be made to these embodimentswithout departing from the broader scope of these embodiments.Accordingly, the specification and drawings are to be regarded in anillustrative rather than a restrictive sense. The accompanying drawingsthat form a part hereof, show by way of illustration, and not oflimitation, specific embodiments in which the subject matter may bepracticed. The embodiments illustrated are described in sufficientdetail to enable those skilled in the art to practice the teachingsdisclosed herein. Other embodiments may be utilized and derivedtherefrom, such that structural and logical substitutions and changesmay be made without departing from the scope of this disclosure. ThisDetailed Description, therefore, is not to be taken in a limiting sense,and the scope of various embodiments is defined only by the appendedclaims, along with the full range of equivalents to which such claimsare entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single inventive concept if more than one is infact disclosed. Thus, although specific embodiments have beenillustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

What is claimed is:
 1. A method of localizing a device, the methodcomprising: receiving, during a period of time, by a wireless referencepoint, a communication signal from the device; generating a sequence ofvalues from the communication signal, as received by the wirelessreference point during the period of time; supplying the sequence ofvalues to a learning model configured to generate an output based onpast values of the sequence of values and at least one predicted futurevalue of the sequence of values relative to a current value of thesequence of values; and estimating, during the period of time, using atleast one hardware processor, a current location of the device based onthe output of the learning model.
 2. The method of claim 1, wherein thesequence of values is based on received signal strength indicator valuesof the communication signal as received by the wireless reference point.3. The method of claim 1, wherein the sequence of values is based on atleast one of a link quality and a channel quality of the communicationsignal as received by the wireless reference point.
 4. The method ofclaim 1, further comprising: receiving, by the wireless reference point,an identifier for the device; determining whether a device-specificmodel for the device exists; and generating, based on thedevice-specific model for the device not existing, the device-specificmodel for the device, wherein the learning model comprises thedevice-specific model.
 5. The method of claim 4, wherein the identifierfor the device comprises a media access control address of the device.6. The method of claim 1, wherein the generating of the sequence ofvalues comprises: periodically sampling, during the period of time, acharacteristic of the communication signal from the device to produce asequence of samples; and encoding the sequence of samples to generatethe sequence of values.
 7. The method of claim 6, wherein the generatingof the sequence of values further comprises: sorting the sequence ofsamples into a plurality of intervals according to a magnitude of eachof the samples; wherein the encoding of the sequence of samples togenerate the sequence of values is based on the sorted sequence ofsamples.
 8. The method of claim 6, wherein the sequence of valuescomprise sparse distributed representations of the sequence of samples.9. The method of claim 1, wherein the learning model comprises a machinelearning model.
 10. The method of claim 1, wherein the at least onepredicted future value of the sequence of values comprises a futurevalue of the sequence of values at a predetermined number of valuesahead of the current value of the sequence of values.
 11. The method ofclaim 1, wherein the learning model is configured to generate the outputbased on the past values of the sequence of values without a previoussite surveying operation.
 12. The method of claim 1, wherein: thewireless reference point comprises a first wireless reference point, thesequence of values comprises a first sequence of values, and thelearning model comprises a first learning model corresponding to thefirst wireless reference point; the method further comprises receiving,during the period of time, by at least a second wireless referencepoint, the communication signal from the device; generating at least asecond sequence of values from the communication signal, as received bythe at least second wireless reference point, during the period of time;and supplying the at least second sequence of values to at least asecond learning model corresponding to the at least second wirelessreference point and configured to generate at least a second outputbased on past values of the at least second sequence of values and atleast one predicted future value of the at least second sequence ofvalues; and the estimating of the current location of the device isbased on the output of the first learning model and the at least secondoutput of the at least second learning model.
 13. The method of claim12, wherein the estimating of the current location of the devicecomprises triangulating the current location of the device based on theoutput of the first learning model and the at least second output of theat least second learning model.
 14. The method of claim 12, wherein theestimating of the current location of the device is based on an outputof a third learning model comprising the first learning model and the atleast second learning model.
 15. A non-transitory computer-readablestorage medium comprising instructions that, when executed by at leastone hardware processor of a machine, cause the machine to performoperations comprising: receiving, during a period of time, by a wirelessreference point, a communication signal from a device; generating asequence of values from the communication signal, as received by thewireless reference point, during the period of time; supplying thesequence of values to a learning model configured to generate an outputbased on past values of the sequence of values and at least onepredicted future value of the sequence of values; and estimating, duringthe period of time, a current location of the device based on the outputof the learning model.
 16. The non-transitory computer-readable storagemedium of claim 15, wherein the operations further comprise: receiving,by the wireless reference point, an identifier for the device;determining whether a device-specific model for the device exists; andgenerating, based on the device-specific model for the device notexisting, the device-specific model for the device, wherein the learningmodel comprises the device-specific model.
 17. A system comprising: atleast one hardware processor; and memory comprising instructions that,when executed by the at least one hardware processor, cause the systemto perform operations comprising: receiving, during a period of time, bya wireless reference point, a communication signal from a device;generating a sequence of values from the communication signal, asreceived by the wireless reference point, during the period of time;supplying the sequence of values to a learning model configured togenerate an output based on past values of the sequence of values and atleast one predicted future value of the sequence of values; andestimating, during the period of time, a current location of the devicebased on the output of the learning model.
 18. The system of claim 17,wherein the operations further comprise: receiving, by the wirelessreference point, an identifier for the device; determining whether adevice-specific model for the device exists; and generating, based onthe device-specific model for the device not existing, thedevice-specific model for the device, wherein the learning modelcomprises the device-specific model.
 19. The system of claim 17, whereinthe generating of the sequence of values comprises: periodicallysampling, during the period of time, a characteristic of thecommunication signal from the device to produce a sequence of samples;and encoding the sequence of samples to generate the sequence of values.20. The method of claim 19, wherein the generating of the sequence ofvalues further comprises: sorting the sequence of samples into aplurality of intervals according to a magnitude of each of the samples;wherein the encoding of the sequence of samples to generate the sequenceof values is based on the sorted sequence of samples.